pg_stat_statements Extension ব্যবহার করে Query Performance Track করা

Monitoring এবং Logging - পোস্টগ্রিএসকিউএল (PostgreSQL) - Database Tutorials

230

pg_stat_statements হল PostgreSQL-এ একটি শক্তিশালী এক্সটেনশন যা ডেটাবেসের কুয়েরি পারফরম্যান্স মনিটরিং এবং ট্র্যাকিংয়ের জন্য ব্যবহৃত হয়। এই এক্সটেনশনটি ডেটাবেসে চলমান কুয়েরি সম্পর্কে তথ্য সংগ্রহ করে, যেমন কুয়েরির গড় সময়, বারবার কুয়েরি চালানোর সংখ্যা, এবং কুয়েরির ফলাফল ইত্যাদি।

pg_stat_statements এক্সটেনশনটি সক্রিয় করার মাধ্যমে আপনি সহজেই ডেটাবেসে চলমান কুয়েরির কার্যকারিতা বিশ্লেষণ করতে পারেন এবং পারফরম্যান্স অপটিমাইজেশন করার জন্য গুরুত্বপূর্ণ ইনসাইট পেতে পারেন।


1. pg_stat_statements এক্সটেনশন ইনস্টল করা

PostgreSQL-এ pg_stat_statements এক্সটেনশনটি ডিফল্টভাবে ইনস্টল করা থাকে, তবে এটি সক্রিয় করা প্রয়োজন।

এক্সটেনশন সক্রিয় করা

  1. PostgreSQL-এর postgresql.conf ফাইলে shared_preload_libraries সেটিংটি কনফিগার করুন:

    shared_preload_libraries = 'pg_stat_statements'
    
  2. PostgreSQL সার্ভার রিস্টার্ট করুন:

    sudo systemctl restart postgresql
    
  3. ডেটাবেসে এক্সটেনশন তৈরি করুন:

    CREATE EXTENSION pg_stat_statements;
    

এক্সটেনশনটি সফলভাবে ইনস্টল হওয়ার পর:

  • PostgreSQL স্বয়ংক্রিয়ভাবে একটি নতুন pg_stat_statements ভিউ তৈরি করবে, যেখানে কুয়েরি সম্পর্কিত তথ্য রাখা হবে।

2. pg_stat_statements ভিউ ব্যবহার করা

pg_stat_statements ভিউটি ডেটাবেসের এক্সিকিউট হওয়া কুয়েরির বিভিন্ন পরিসংখ্যান সরবরাহ করে। এর মধ্যে কুয়েরির গড় সময়, মোট কুয়েরি সংখ্যা, কুয়েরির সফলতা, এবং কুয়েরি সম্পর্কিত অন্যান্য তথ্য থাকে।

ভিউ-এর কাঠামো

pg_stat_statements ভিউটি সাধারণত নিম্নলিখিত কলামগুলো ধারণ করে:

  • userid: কুয়েরি চালানোর ব্যবহারকারীর ID।
  • dbid: ডেটাবেসের ID।
  • queryid: প্রতিটি কুয়েরির জন্য একটি ইউনিক আইডি।
  • query: কুয়েরির টেক্সট।
  • calls: কুয়েরির কতবার এক্সিকিউট হয়েছে।
  • total_time: কুয়েরি এক্সিকিউট করতে মোট সময়।
  • min_time: কুয়েরি এক্সিকিউট করতে সবচেয়ে কম সময়।
  • max_time: কুয়েরি এক্সিকিউট করতে সবচেয়ে বেশি সময়।
  • mean_time: কুয়েরির গড় এক্সিকিউশন সময়।
  • stddev_time: কুয়েরির এক্সিকিউশন সময়ের স্ট্যান্ডার্ড ডিভিয়েশন।
  • rows: কুয়েরি চালানোর সময় কতটি রেকর্ড রিটার্ন হয়েছে।
  • shared_blks_hit: শেয়ারড বাফার ক্যাশে থাকা ব্লকের সংখ্যা।
  • shared_blks_read: শেয়ার্ড বাফার থেকে পড়া ব্লকের সংখ্যা।

pg_stat_statements থেকে কুয়েরি পরিসংখ্যান দেখা

নিম্নলিখিত কুয়েরি দিয়ে আপনি pg_stat_statements থেকে কুয়েরি পারফরম্যান্স পরিসংখ্যান দেখতে পারেন:

SELECT
    query,
    calls,
    total_time,
    min_time,
    max_time,
    mean_time,
    rows,
    shared_blks_hit,
    shared_blks_read
FROM
    pg_stat_statements
ORDER BY
    total_time DESC
LIMIT 10;

এই কুয়েরি PostgreSQL সার্ভারে চলমান সেরা 10 কুয়েরি পারফরম্যান্স দেখাবে, যা মোট সময় অনুযায়ী সাজানো।


3. Query Performance Analyzing and Optimization

pg_stat_statements এর মাধ্যমে পাওয়া তথ্যের উপর ভিত্তি করে, আপনি বিভিন্ন কুয়েরি অপটিমাইজ করতে পারেন।

High-Impact Queries Identifying:

এটি আপনার ডেটাবেসে সবার বেশি সময় নষ্ট করা কুয়েরি শনাক্ত করতে সাহায্য করে। আপনি total_time, mean_time অথবা calls অনুসারে কুয়েরি ফিল্টার করতে পারেন। উদাহরণস্বরূপ, যদি কোনও কুয়েরি একাধিকবার রান হয়ে থাকে এবং এর পারফরম্যান্স খারাপ হয়, তবে আপনি সেই কুয়েরিটিকে অপটিমাইজ করতে পারবেন।

Indexes Optimization:

pg_stat_statements তথ্য থেকে যদি এটি দেখা যায় যে কোনও কুয়েরি ইনডেক্স ব্যবহার করছে না, তবে আপনি সেই কুয়েরি বা টেবিলের জন্য ইনডেক্স তৈরি করতে পারেন।

Use of EXPLAIN ANALYZE:

EXPLAIN ANALYZE কমান্ডের মাধ্যমে কুয়েরির কার্যকরী পরিকল্পনা দেখে অপটিমাইজেশন করা যায়। pg_stat_statements ভিউ থেকে যে কুয়েরিগুলি বেশি সময় নিচ্ছে, তাদের EXPLAIN ANALYZE ব্যবহার করে আরও গভীরভাবে বিশ্লেষণ করতে হবে।

EXPLAIN ANALYZE
SELECT * FROM my_table WHERE column_name = 'some_value';

Removing Redundant Queries:

কিছু কুয়েরি যা পুনরাবৃত্তি হচ্ছে, সেগুলি অ্যাপ্লিকেশন বা সিস্টেম লেভেলে ক্যাশিং করে ডেটাবেসের চাপ কমানো যেতে পারে। এর জন্য pg_stat_statements এর calls এবং total_time পরিসংখ্যান দেখতে হবে।


4. Resetting pg_stat_statements Data

pg_stat_statements-এর ট্র্যাক করা তথ্য পুনরায় রিসেট করার জন্য, বিশেষত যখন আপনি নতুন পারফরম্যান্স মনিটরিং সেশন শুরু করতে চান, আপনি pg_stat_statements_reset() ফাংশন ব্যবহার করতে পারেন:

SELECT pg_stat_statements_reset();

এটি সমস্ত কুয়েরি পরিসংখ্যান মুছে ফেলবে এবং নতুন তথ্য সংগ্রহ করতে শুরু করবে।


5. Limitations of pg_stat_statements

  • Memory Consumption: pg_stat_statements সমস্ত কুয়েরি ট্র্যাক করার জন্য স্মৃতি ব্যবহার করে। তাই খুব বেশি দীর্ঘ এবং ভারী ট্র্যাফিকের ডেটাবেসে এটি কিছু পরিমাণ স্মৃতি খরচ করতে পারে।
  • Not a Real-Time Tool: যদিও এটি পারফরম্যান্স বিশ্লেষণ করতে সহায়তা করে, এটি রিয়েল-টাইম কুয়েরি ম্যানেজমেন্ট বা মেট্রিক ট্র্যাকিংয়ের জন্য উপযুক্ত নয়। আপনি একটি সিস্টেম মনিটরিং টুলের পাশাপাশি এটি ব্যবহার করতে পারেন।

সারাংশ

pg_stat_statements PostgreSQL ডেটাবেসে কুয়েরি পারফরম্যান্স মনিটরিংয়ের জন্য একটি অত্যন্ত কার্যকরী টুল। এটি চলমান কুয়েরি সম্পর্কিত তথ্য সংগ্রহ করে, যা আপনাকে সিস্টেমের কার্যকারিতা বিশ্লেষণ এবং অপটিমাইজ করতে সহায়তা করে। আপনি total_time, mean_time, calls, এবং অন্যান্য পরিসংখ্যান ব্যবহার করে আপনার ডেটাবেসের পারফরম্যান্স উন্নত করতে পারেন এবং প্রয়োজনীয় কুয়েরিগুলিকে অপটিমাইজ করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...